Skip to content

chore(BA-3306): Upgrade to Python 3.14.3#7200

Open
achimnol wants to merge 40 commits intomainfrom
chore/python-3.14-upgrade
Open

chore(BA-3306): Upgrade to Python 3.14.3#7200
achimnol wants to merge 40 commits intomainfrom
chore/python-3.14-upgrade

Conversation

@achimnol
Copy link
Copy Markdown
Member

@achimnol achimnol commented Dec 9, 2025

resolves #7199 (BA-3306)

  • Upgrade Python: 3.13.7 → 3.14.3 (PBS 20260325)
    • pants.toml
    • pyproject.toml
  • Update Python & PBS (python-build-standalone) version mentioned at:
    • tools/build-macros.py
    • scripts/python.sh
    • scripts/pyscript.sh
    • docs/dev/daily-workflows.rst
    • docs/install/install-from-package/os-preparation.rst
    • src/ai/backend/README.md, src/ai/backend/install/README.md, README.md
  • Upgrade pex: 2.50.4 → 2.74.1 (for pip 25.2 → 25.3)
  • Add sniffio as an explicit dependency (upstream issue: Dependencies: sniffio is missing from glide dependencies - Python valkey-io/valkey-glide#5017)
    • This will be removed once the new valkey-glide 2.2 release becomes available.
  • Upgrade mypy: 1.18.2 → 1.19.0
  • Upgrade ruff: 0.14.0 → 0.14.8
    • Add scripts/fetch-ruff-version.py for convenient upgrade in the future
    • Pin [tool.ruff].target-version = "py313" in pyproject.toml for backport compatibility
  • Update etcd-client-py to ~=0.5.1 for Python 3.14 compatible wheels
  • Upgrade dependencies with native extensions for Python 3.14 compatibility:
    • pydantic: 2.11.3 → 2.12.0, orjson: 3.10.16 → 3.11.0, bcrypt: 4.2.0 → 5.0.0
    • memray: 1.17.2 → 1.19.0, valkey-glide: 2.0.1 → 2.2.2, msgpack: 1.1.0 → 1.1.2
    • multidict: 6.6.4 → 6.7.0, yarl: 1.19.0 → 1.22.0, hiredis: 3.0.0 → 3.3.0
    • setproctitle: 1.3.5 → 1.3.7, aiohttp: 3.12.15 → 3.13.3
  • Fix type errors:
    • Replace removed _BaseNetwork with type BaseIPNetwork = IPv4Network | IPv6Network
    • Update federation_version="2.11" for strawberry-graphql compatibility
  • Regenerate all lockfiles (python, python-kernel, tool resolves) for CPython 3.14.3
  • Update our internal accelerator plugins to build Python 3.14 compatible wheels (for those with binaries)

📚 Documentation preview 📚: https://sorna--7200.org.readthedocs.build/en/7200/


📚 Documentation preview 📚: https://sorna-ko--7200.org.readthedocs.build/ko/7200/

Update the target Python version from 3.13.7 to 3.14.1:
- pants.toml: interpreter_constraints
- pyproject.toml: requires-python, python_executable, pythonVersion, venv
Upgrade packages with native extensions (pyo3/Rust/C) that require
newer versions to build wheels for Python 3.14:

- pydantic: 2.11.3 → 2.12.0 (pydantic-core pyo3 update)
- orjson: 3.10.16 → 3.11.0 (cp314 wheels)
- bcrypt: 4.2.0 → 5.0.0 (Python 3.14 support)
- memray: 1.17.2 → 1.19.0 (Python 3.14 support)
- valkey-glide: 2.0.1 → 2.2.0 (cp314 wheels)
- msgpack: 1.1.0 → 1.1.2 (cp314 wheels)
- multidict: 6.6.4 → 6.7.0 (Python 3.14 CI)
- yarl: 1.19.0 → 1.22.0 (cp314 wheels)
- hiredis: 3.0.0 → 3.3.0 (cp314 wheels)
- setproctitle: 1.3.5 → 1.3.7 (Python 3.14 support)
- aiohttp: 3.12.15 → 3.13.0 (free-threading support)
@github-actions github-actions Bot added the size:M 30~100 LoC label Dec 9, 2025
@github-actions github-actions Bot added size:L 100~500 LoC and removed size:M 30~100 LoC labels Dec 10, 2025
@github-actions github-actions Bot added area:docs Documentations comp:manager Related to Manager component comp:agent Related to Agent component comp:common Related to Common component labels Dec 10, 2025
- Add scripts/fetch-ruff-version.py to fetch and print the ruff version
  table for use in pants.toml
- In Python 3.14, we can remove parenthesis around multiple exception
  types without "as" expressions.  Ruff applies this rule by default
  if its target version is recognized as 3.14.
@HyeockJinKim HyeockJinKim force-pushed the main branch 2 times, most recently from 9552aac to 4af738e Compare December 31, 2025 15:41
achimnol and others added 10 commits January 8, 2026 21:54
…hon 3.14.3

- Merge current main into the PR branch
- Update all Python version references from 3.14.2 to 3.14.3
- Update PBS release from 20251209 to 20260325
- Update etcd-client-py to ~=0.5.1 (now has cp314 wheels)
- Update docs (daily-workflows, os-preparation, READMEs) for 3.14.3
- Fix identity.py: replace removed _BaseNetwork with type alias,
  remove generic args from BaseIPNetwork usage sites
- Regenerate all lockfiles (python, python-kernel, tool resolves)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve python.lock conflict and regenerate for Python 3.14.3.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: octodog <mu001@lablup.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@rapsealk rapsealk changed the title chore(BA-3306): Upgrade to Python 3.14 chore(BA-3306): Upgrade to Python 3.14.3 Apr 1, 2026
rapsealk and others added 3 commits April 1, 2026 16:18
- Disable `untyped-decorator` error code globally in mypy config
  (mypy 1.19 split this from `misc`, causing hundreds of new errors
  from click/strawberry decorators)
- Remove now-unused `# type: ignore[misc]` comments from 88 files
  where they only suppressed the old `untyped-decorator` subset
- Fix unreachable statement in agent.py (pre-existing, surfaced by
  transitive dependency check)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace `sa.ext.asyncio.AsyncConnection` and `sa.ext.asyncio.create_async_engine`
with direct imports — mypy cannot resolve attribute access on `sa.ext` subpackage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@rapsealk rapsealk marked this pull request as ready for review April 1, 2026 08:18
Copilot AI review requested due to automatic review settings April 1, 2026 08:18
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Upgrades the repo’s baseline CPython to 3.14.3 (including python-build-standalone release bump), refreshes tool lockfiles, and applies compatibility tweaks across runtime deps and Strawberry GraphQL schema generation/config.

Changes:

  • Bump interpreter constraints / metadata to CPython 3.14.3 and update related docs/scripts.
  • Regenerate/update Pants tool lockfiles and tool pins (notably mypy + ruff).
  • Apply Python 3.14 compatibility fixes (typing updates, federation config change, dependency bumps including explicit sniffio).

Reviewed changes

Copilot reviewed 110 out of 118 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tools/towncrier.lock Regenerated tool lock for CPython 3.14.3.
tools/setuptools.lock Regenerated tool lock for CPython 3.14.3.
tools/mypy.lock Regenerated mypy tool lock + dependency updates for 3.14.
tools/mypy-requirements.txt Updates pinned mypy/pydantic/strawberry requirements for the tool resolve.
tools/build-macros.py Updates scie Python/PBS versions used for builds.
tools/black.lock Regenerated Black tool lock for CPython 3.14.3 and updated transitive pins.
tests/unit/manager/health/test_database.py Adjusts SQLAlchemy async engine import usage in tests.
tests/unit/agent/test_config_validation.py Fixes pytest fixture method signature in class context.
src/ai/backend/README.md Updates Python version references (but Pants version info needs alignment—see comment).
src/ai/backend/manager/repositories/auth/db_source/db_source.py Replaces deprecated SQLAlchemy async connection type reference with AsyncConnection.
src/ai/backend/manager/api/gql/vfs_storage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/vfolder.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/vfolder_v2/types/nested.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/vfolder_v2/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/user/types/node.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/user/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/user/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/storage_namespace.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/session/types.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/session/resolver/session.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/service_catalog/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/schema.py Updates federation config to federation_version="2.11" for Strawberry compatibility.
src/ai/backend/manager/api/gql/scheduling_history/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/scheduler.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/runtime_variant/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/runtime_variant_preset/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_usage/types/user_usage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_usage/types/project_usage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_usage/types/domain_usage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_usage/resolver/user_usage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_usage/resolver/project_usage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_usage/resolver/domain_usage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_slot/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_preset/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_policy_v2/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_policy_v2/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_group/types.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_group/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/resource_allocation/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/reservoir_registry.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/rbac/types/role.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/rbac/types/permission.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/rbac/types/entity.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/rbac/resolver/role.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/rbac/resolver/permission.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/rbac/resolver/entity.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/prometheus_query_preset/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/prometheus_query_preset/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/project_v2/types/node.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/project_v2/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/project_v2/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/object_storage.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/notification/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/model_card/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/login_session/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/login_history/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/keypair/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/keypair/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/kernel/types.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/kernel/resolver/kernel.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/image/types.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/image/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/huggingface_registry.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/types/user.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/types/project.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/types/domain.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/types/common.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/resolver/user.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/resolver/project.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/fair_share/resolver/domain.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/domain_v2/types/node.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/domain_v2/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/domain_v2/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/types/route.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/types/revision.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/types/replica.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/types/deployment.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/route.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/revision.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/revision_preset.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/replica.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/policy.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/deployment.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/auto_scaling.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/deployment/resolver/access_token.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/container_registry/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/container_registry/resolver/mutation.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/background_task.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/audit_log/types/node.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/audit_log/resolver/query.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/artifact/types.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/artifact/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/artifact_registry.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/app_config.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/agent/types.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/manager/api/gql/agent/resolver.py Removes no-longer-needed type: ignore[misc] annotations.
src/ai/backend/install/README.md Updates hardcoded venv path to 3.14.3.
src/ai/backend/common/identity.py Updates IP network typing for Python 3.14 compatibility (drops removed _BaseNetwork).
src/ai/backend/common/events/dispatcher.py Removes no-longer-needed type: ignore[misc] annotations on decorators.
src/ai/backend/common/distributed.py Removes no-longer-needed type: ignore[misc] annotations on decorators.
src/ai/backend/agent/docker/kernel.py Adds explicit type annotation for config variable.
src/ai/backend/agent/docker/agent.py Removes no-longer-needed type: ignore[misc] annotations on decorator.
src/ai/backend/agent/agent.py Simplifies preopen_ports defaulting.
scripts/python.sh Updates scripted Python version to 3.14.3.
scripts/pyscript.sh Updates scripted Python version to 3.14.3.
scripts/fetch-ruff-version.py Adds helper script to generate Pants ruff known_versions entries.
requirements.txt Updates dependency pins for Python 3.14 compatibility and adds sniffio.
README.md Updates top-level Python/Pants version requirements text.
pyproject.toml Updates requires-python, tool configuration (ruff target-version, mypy/pyright python versions/paths).
pants.toml Updates interpreter constraints, universe, and ruff version/known_versions; already sets Pants 2.29.0.
docs/manager/graphql-reference/v2-schema.graphql Updates federation spec link version.
docs/manager/graphql-reference/supergraph.graphql Updates join spec version and adds new directive input types/scalars.
docs/install/install-from-package/os-preparation.rst Updates PBS/Python download example and venv creation command to 3.14.3.
docs/dev/daily-workflows.rst Updates example tool export paths and lockset usage for 3.14.3.
changes/7199.enhance.md Adds towncrier fragment for the Python 3.14.3 upgrade.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/ai/backend/README.md
Comment on lines 278 to 289
| Backend.AI Version | Python Version | Pantsbuild Version |
|:------------------|:--------------|:-------------------|
| 25.06.x ~ (main) | 3.13.x | 2.27.x |
| 25.06.x ~ (main) | 3.14.x | 2.27.x |
| 24.03.x ~ 25.05.x | 3.12.x | 2.21.x |
| 23.03.x / 23.09.x | 3.11.x | 2.19.x |
| 22.03.x / 22.09.x | 3.10.x | - |
| 21.03.x / 21.09.x | 3.8.x | - |

**Current main branch**:
- Python: CPython 3.13.7
- Python: CPython 3.14.3
- Pantsbuild: 2.27.0
- Versions defined in `pants.toml`
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This README’s Pantsbuild version info is now inconsistent with the repository’s actual Pants version. pants.toml sets pants_version = "2.29.0", but this table and the “Current main branch” section still say 2.27.x / 2.27.0. Please update these entries to match the configured Pants version.

Copilot uses AI. Check for mistakes.
Use `PYVER="3.14"` instead of `PYVER="3.14.3"` in pyscript.sh and
python.sh so that uv can resolve to the best available 3.14.x
interpreter even when its download registry doesn't have the exact
patch version yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@rapsealk rapsealk requested review from a team and HyeockJinKim April 1, 2026 09:02
Align README version table and "Current main branch" section with the
actual pants_version = "2.29.0" in pants.toml.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@rapsealk rapsealk added this to the 26.4 milestone Apr 1, 2026
@rapsealk
Copy link
Copy Markdown
Member

rapsealk commented Apr 3, 2026

Review: No-GIL / Free-Threaded Python Readiness

The PR itself looks good as a Python 3.14.3 compatibility upgrade. The code changes are straightforward — _BaseNetwork private API removal, SQLAlchemy import fix, # type: ignore[misc] cleanup, and minor type annotation fixes. No thread-safety regressions introduced.

However, since Python 3.14 ships with experimental free-threaded build support (python3.14t), here's a summary of areas that would need attention if the project plans to test against the no-GIL build in the future:

Global Mutable State Without Synchronization

These module-level dicts are mutated at runtime without locks — safe under GIL, but racy under free-threaded mode:

Location Pattern
src/ai/backend/manager/api/utils.py _burst_times: MutableMapping — mutated by concurrent request handlers
src/ai/backend/appproxy/common/utils.py _burst_times: dict — same pattern
src/ai/backend/common/data/notification/messages.py _MESSAGE_TYPE_REGISTRY: dict — mutated during class registration
src/ai/backend/common/redis_helper.py _keepalive_options: MutableMapping
src/ai/backend/agent/resources.py:84 known_slot_types.update() at init time, no guard

Already Correct

  • src/ai/backend/common/metrics/safe.py uses threading.Lock for the circuit-breaker state — this is already correct and will work under free-threaded mode.
  • The vast majority of the codebase uses asyncio.Lock/Event/Semaphore which run on a single event loop thread and are unaffected by GIL removal.

Suggestions for Future Work

  1. Consider adding a CI matrix entry for python3.14t to catch thread-safety issues early
  2. The _burst_times rate limiter dicts are the highest-risk pattern — they could use threading.Lock wrapping if free-threaded support is a goal
  3. A sys._is_gil_enabled() check at startup could help operators know when running under free-threaded mode

No blocking concerns for this PR as-is.

rapsealk and others added 2 commits April 3, 2026 14:17
Resolve conflicts in requirements.txt and python.lock:
- Added authlib~=1.3.2 and httpx~=0.27.0 from main
- Kept PR's version pins (asyncpg~=0.31.0, bcrypt~=5.0.0, etc.)
- Merged both cp314 and cp313 charset_normalizer wheels in lockfile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve merge conflicts:
- GQL resolvers: keep main's admin_ renames + PR's type: ignore removal
- schema.py: keep PR's federation_version="2.11"
- Lock files: keep PR branch versions (requires Python 3.14 to regenerate)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs Documentations comp:agent Related to Agent component comp:common Related to Common component comp:manager Related to Manager component size:L 100~500 LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade the base Python version to 3.14 along with required dependencies

3 participants